home *** CD-ROM | disk | FTP | other *** search
- #ifndef _P9030_LIB_H_
- #define _P9030_LIB_H_
-
- #ifdef __KERNEL__
- #include "../../../include/kdstdlib.h"
- #endif //__KERNEL__
- #include "../../../include/windrvr.h"
- #include "../../../samples/shared/pci_regs.h"
- #include "../../../samples/shared/bits.h"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- // PLX register definitions
- enum {
- P9030_LAS0RR = 0x00,
- P9030_LAS1RR = 0x04,
- P9030_LAS2RR = 0x08,
- P9030_LAS3RR = 0x0c,
- P9030_EROMRR = 0x10,
- P9030_LAS0BA = 0x14,
- P9030_LAS1BA = 0x18,
- P9030_LAS2BA = 0x1c,
- P9030_LAS3BA = 0x20,
- P9030_EROMBA = 0x24,
- P9030_LAS0BRD = 0x28,
- P9030_LAS1BRD = 0x2c,
- P9030_LAS2BRD = 0x30,
- P9030_LAS3BRD = 0x34,
- P9030_EROMBRD = 0x38,
- P9030_CS0BASE = 0x3c,
- P9030_CS1BASE = 0x40,
- P9030_CS2BASE = 0x44,
- P9030_CS3BASE = 0x48,
- P9030_INTCSR = 0x4c,
- P9030_PROT_AREA = 0x4e,
- P9030_CNTRL = 0x50,
- P9030_GPIOC = 0x54,
- P9030_PMDATASEL = 0x70,
- P9030_PMDATASCALE = 0x74,
- };
-
- // PLX specific PCI configuration registers
- enum {
- P9030_VPD_ADDR = 0x4E,
- P9030_VPD_DATA = 0x50,
- };
-
- typedef enum
- {
- P9030_MODE_BYTE = 0,
- P9030_MODE_WORD = 1,
- P9030_MODE_DWORD = 2
- } P9030_MODE;
-
- typedef enum
- {
- P9030_ADDR_REG = AD_PCI_BAR0,
- P9030_ADDR_REG_IO = AD_PCI_BAR1,
- P9030_ADDR_SPACE0 = AD_PCI_BAR2,
- P9030_ADDR_SPACE1 = AD_PCI_BAR3,
- P9030_ADDR_SPACE2 = AD_PCI_BAR4,
- P9030_ADDR_SPACE3 = AD_PCI_BAR5,
- P9030_ADDR_EPROM = AD_PCI_BAR_EPROM,
- } P9030_ADDR;
-
-
- enum { P9030_RANGE_REG = 0x00000080 };
-
- typedef struct P9030_STRUCT *P9030_HANDLE;
- typedef P9030_HANDLE P9030HANDLE;
-
- typedef struct
- {
- DWORD dwCounter; // number of interrupts received
- DWORD dwLost; // number of interrupts not yet dealt with
- BOOL fStopped; // was interrupt disabled during wait
- DWORD dwStatusReg; // value of status register when interrupt occured
- } P9030_INT_RESULT;
-
- typedef void (WINAPI *P9030_INT_HANDLER)( P9030_HANDLE hPlx, P9030_INT_RESULT *intResult);
-
- // options for PLX_Open
- enum { P9030_OPEN_USE_INT = 0x1 };
-
- DWORD P9030_CountCards (DWORD dwVendorID, DWORD dwDeviceID);
- BOOL P9030_Open (P9030_HANDLE *phPlx, DWORD dwVendorID, DWORD dwDeviceID, DWORD nCardNum, DWORD options);
- void P9030_Close (P9030_HANDLE hPlx);
- BOOL P9030_IsAddrSpaceActive(P9030_HANDLE hPlx, P9030_ADDR addrSpace);
- void P9030_GetPciSlot(P9030_HANDLE hPlx, WD_PCI_SLOT *pPciSlot);
-
- void P9030_ReadWriteBlock (P9030_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf,
- DWORD dwBytes, BOOL fIsRead, P9030_ADDR addrSpace, P9030_MODE mode);
- void P9030_ReadBlock (P9030_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf,
- DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
- void P9030_WriteBlock (P9030_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf,
- DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
- BYTE P9030_ReadByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr);
- void P9030_WriteByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr, BYTE data);
- WORD P9030_ReadWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr);
- void P9030_WriteWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr, WORD data);
- DWORD P9030_ReadDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr);
- void P9030_WriteDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwLocalAddr, DWORD data);
-
- void P9030_ReadWriteSpaceBlock (P9030_HANDLE hPlx, DWORD dwOffset, PVOID buf,
- DWORD dwBytes, BOOL fIsRead, P9030_ADDR addrSpace, P9030_MODE mode);
- void P9030_ReadSpaceBlock (P9030_HANDLE hPlx, DWORD dwOffset, PVOID buf,
- DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
- void P9030_WriteSpaceBlock (P9030_HANDLE hPlx, DWORD dwOffset, PVOID buf,
- DWORD dwBytes, P9030_ADDR addrSpace, P9030_MODE mode);
- BYTE P9030_ReadSpaceByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset);
- void P9030_WriteSpaceByte (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset, BYTE data);
- WORD P9030_ReadSpaceWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset);
- void P9030_WriteSpaceWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset, WORD data);
- DWORD P9030_ReadSpaceDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset);
- void P9030_WriteSpaceDWord (P9030_HANDLE hPlx, P9030_ADDR addrSpace, DWORD dwOffset, DWORD data);
-
- BOOL P9030_IntIsEnabled (P9030_HANDLE hPlx);
- BOOL P9030_IntEnable (P9030_HANDLE hPlx, P9030_INT_HANDLER funcIntHandler);
- void P9030_IntDisable (P9030_HANDLE hPlx);
-
- DWORD P9030_ReadReg (P9030_HANDLE hPlx, DWORD dwReg);
- void P9030_WriteReg (P9030_HANDLE hPlx, DWORD dwReg, DWORD dwData);
-
- BOOL P9030_EEPROMReadWord(P9030_HANDLE hPlx, DWORD dwOffset, PWORD pwData);
- BOOL P9030_EEPROMWriteWord(P9030_HANDLE hPlx, DWORD dwOffset, WORD wData);
- BOOL P9030_EEPROMReadDWord(P9030_HANDLE hPlx, DWORD dwOffset, PDWORD pdwData);
- BOOL P9030_EEPROMWriteDWord(P9030_HANDLE hPlx, DWORD dwOffset, DWORD dwData);
- BOOL P9030_EEPROMValid(P9030_HANDLE hPlx);
-
- DWORD P9030_ReadPCIReg(P9030_HANDLE hPlx, DWORD dwReg);
- void P9030_WritePCIReg(P9030_HANDLE hPlx, DWORD dwReg, DWORD dwData);
-
- // this string is set to an error message, if one occurs
- extern CHAR P9030_ErrorString[];
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif
-